const router = require('koa-router')()
const { Sequelize } = require('sequelize')
const initModels = require('../models/init-models') // 假设模型文件在 models 目录下

// 创建 Sequelize 实例
const sequelize = new Sequelize('$DB_NAME$', '$DB_USER$', '$DB_PWD$', {
  host: '$DB_HOST$',
  dialect: 'mysql'
})

// 初始化模型
const models = initModels(sequelize)

router.prefix('/$TABLE_NAME$')

// 修改 list 路由以支持分页
router.get('/list', async (ctx, next) => {
  try {
    const { 
      page = 1,    // 当前页码，默认第1页
      limit = 10   // 每页数量，默认10条
    } = ctx.query

    const offset = (page - 1) * limit

    // 执行分页查询
    const { count, rows } = await models.$TABLE_NAME$.findAndCountAll({
      order: [
        ['$PRIMARY$', 'DESC']  // 按ID倒序排序
      ],
      offset: Number(offset),
      limit: Number(limit)
    })

    ctx.body = {
      code: 20000,
      data: {
        total: count,         // 总记录数
        items: rows,          // 当前页数据
        page: Number(page),   // 当前页码
        limit: Number(limit), // 每页条数
        pages: Math.ceil(count / limit) // 总页数
      },
      message: '获取$TABLE_NAME$列表成功'
    }
  } catch (error) {
    ctx.body = {
      code: -1,
      message: '获取$TABLE_NAME$列表失败',
      error: error.message
    }
  }
})
//ADD-增加
router.post('/add', async (ctx, next) => {
  try {
    // 获取请求体中的数据
    const objData = ctx.request.body

    // 使用 Sequelize 创建新记录
    const newobj = await models.$TABLE_NAME$.create(objData)

    ctx.body = {
      code: 20000,
      data: newobj,
      message: '$TABLE_NAME$ 单条记录添加成功'
    }
  } catch (error) {
    ctx.body = {
      code: -1,
      message: '$TABLE_NAME$ 单条记录添加失败',
      error: error.message
    }
  }
})

// DETAIL-获取详情
router.get('/detail', async (ctx, next) => {
    try {
      // 从查询参数中获取视频ID
      const { id } = ctx.query
      
      if (!id) {
        ctx.body = {
          code: -1,
          message: '$TABLE_NAME$ 单条记录ID不能为空'
        }
        return
      }
  
      // 查询详情
      const objDetail = await models.$TABLE_NAME$.findOne({
        where: {
          $PRIMARY$: id
        }
      })
  
      if (!objDetail) {
        ctx.body = {
          code: -1,
          message: '$TABLE_NAME$ 单条记录不存在'
        }
        return
      }
  
      ctx.body = {
        code: 20000,
        data: objDetail,
        message: '获取$TABLE_NAME$ 单条记录详情成功'
      }
  
    } catch (error) {
      ctx.body = {
        code: -1,
        message: '获取objDetail详情失败',
        error: error.message
      }
    }
  })

// DELETE-删除视频
router.get('/delete', async (ctx, next) => {
  try {
    // 从查询参数中获取ID
    const { id } = ctx.query
    
    // 验证ID是否存在
    if (!id) {
      ctx.body = {
        code: -1,
        message: 'objDetailID不能为空'
      }
      return
    }

    // 先查询纪录是否存在
    const obj = await models.$TABLE_NAME$.findOne({
      where: {
        $PRIMARY$: id
      }
    })

    if (!obj) {
      ctx.body = {
        code: -1,
        message: '$TABLE_NAME$单条记录不存在'
      }
      return
    }

    // 执行删除操作
    await models.$TABLE_NAME$.destroy({
      where: {
        $PRIMARY$: id
      }
    })

    ctx.body = {
      code: 20000,
      message: '$TABLE_NAME$单条记录删除成功'
    }

  } catch (error) {
    ctx.body = {
      code: -1,
      message: '$TABLE_NAME$单条记录删除失败',
      error: error.message
    }
  }
})

// UPDATE - 更新信息
router.post('/update', async (ctx, next) => {
  try {
    // 获取请求体中的数据
    const objData = ctx.request.body
    const  id  = objData.$PRIMARY$

    // 验证必要参数
    if (!id) {
      ctx.body = {
        code: -1,
        message: '$TABLE_NAME$单条记录ID不能为空'
      }
      return
    }

    // 先查询记录是否存在
    const obj = await models.$TABLE_NAME$.findOne({
      where: {
        $PRIMARY$:id
      }
    })

    if (!obj) {
      ctx.body = {
        code: -1,
        message: '$TABLE_NAME$单条记录不存在'
      }
      return
    }

    // 执行更新操作
    await models.$TABLE_NAME$.update(objData, {
      where: {
        $PRIMARY$:id
      }
    })

    // 查询更新后的数据
    const updatedOBJ = await models.$TABLE_NAME$.findOne({
      where: {
        $PRIMARY$:id
      }
    })

    ctx.body = {
      code: 20000,
      data: updatedOBJ,
      message: '$TABLE_NAME$单条记录更新成功'
    }

  } catch (error) {
    ctx.body = {
      code: -1,
      message: '$TABLE_NAME$单条记录更新失败',
      error: error.message
    }
  }
})





module.exports = router
